package de.akabahn.ebd.stw.zdxfc.prs.commande;

import org.apache.log4j.Logger;

/**
 * Main-Klasse der Anwendung, Start des Bedienpults<br>
 * <br>
 * Uebergabeparameter:<br>
 * <ul>
 * <li><code>-hh</code>: Taste fuer Hilfshandlungen kann verwendet werden</li>
 * <li><code>-demo</code>: Starten des Bedienpults im Demo-Mode (ohne DBD-Anbindung)</li>
 * </ul>
 * 
 * @author Peter Eimann
 * @since 1.0
 * @version 1.2
 * @see ZDXFCCommandeMain
 */
public class ZDXFCCommandeLauncher {
	
	private final static Logger LOG = Logger.getLogger(ZDXFCCommandeLauncher.class);

	/**
	 * Main-Methode der Anwendung.<br>
	 * Return-Codes:<br>
	 * <ul>
	 * <li>0: Anwendung wurde ohne Fehler beendet</li>
	 * <li>2: Anwendung wurde durch einen Fehler beendet</li>
	 * </ul>
	 * 
	 * @param args Uebergabeparameter (siehe Beschreibung der Klasse)
	 */
	public static void main(String[] args) {
		ZDXFCCommandeMain main = null;
		boolean demo = false;
		boolean hilfsHandlungen = false;
		
		try {
			LOG.fatal("Starting ZDXFCCommandeMain Version: " + ZDXFCCommandeMain.VERSION);
			
			if (args != null) {
				for (String arg : args) {
					if ("-demo".equals(arg)) {
						demo = true;
					} else if ("-hh".equals(arg)) {
						hilfsHandlungen = true;
					}
				}
			}
			
			main = new ZDXFCCommandeMain(hilfsHandlungen, demo);
			main.start();
		} catch (Throwable t) {
			LOG.error("Anwendung aufgrund eines Fehlers beendet", t);
			System.err.println("Anwendung aufgrund eines Fehlers beendet:");
			t.printStackTrace();
			System.exit(2);
		}
	}
}
